home *** CD-ROM | disk | FTP | other *** search
-
-
- ====================
-
- INTERFAC.C
-
- ====================
-
-
- /* Listing 6: Interface benchmark */
-
- #define HYPERC
-
- /* interface.c */
-
-
- /* Modified by Joel West, April 14, 1987 for all systems */
-
- #include <stdio.h>
- #ifdef HYPERC
- #include <TBXTypes.h>
- #include <events.h>
- #else
- # ifdef MACC
- # include <macdefs.h>
- # include <events.h>
- # else
- # ifdef AZTEC
- # include <window.h>
- # include <event.h>
- # else
- # ifdef LSC
- # include <EventMgr.h>
- # endif
- # endif
- # endif
- #endif
-
- #define COUNT 10000
-
- main()
- { int i, eMask1, eMask2, bool1, bool2;
- EventRecord eRcrd1, eRcrd2;
-
- #include "startup.c"
-
- eMask1 = eMask2 = -1;
- for (i = 0; i < COUNT; ++i)
- { bool1 = GetNextEvent(eMask1, &eRcrd1);
- bool2 = GetNextEvent(eMask2, &eRcrd2);
-
- bool1 = GetNextEvent(eMask1, &eRcrd1);
- bool2 = GetNextEvent(eMask2, &eRcrd2);
-
- bool1 = GetNextEvent(eMask1, &eRcrd1);
- bool2 = GetNextEvent(eMask2, &eRcrd2);
-
- bool1 = GetNextEvent(eMask1, &eRcrd1);
- bool2 = GetNextEvent(eMask2, &eRcrd2);
- }
-
- #include "done.c"
-
- }
-
-
- ====================
-
- SAVAGE.C
-
- ====================
-
-
- /* Listing 2: Savage benchmark */
-
- /* savage.c */
-
- #define LSC
-
- /*
- ** savage.c -- floating point speed and accuracy test. C version
- ** derived from BASIC version which appeared in Dr. Dobb's Journal,
- ** Sep. 1983, pp. 120-122.
-
-
- Modified by Joel West, April 14, 1987
-
- For accuracy on the Macintosh, we want to use the SANE 80-bit
- extended type for all compilers. This is:
-
- Lightspeed C double
- Mac C extended
- Hyper C extended
- Aztec C n/a
- */
-
- #define ILOOP 2500
- #include <stdio.h>
-
- #ifdef MACC
- #define EXTENDED extended
- #include <sane.h>
- #else
- #ifdef HYPERC
- #define EXTENDED extended
- #include <TBXTypes.h>
- #include <events.h>
- #else
- #define EXTENDED double
- #endif
- #endif
-
-
- #ifdef HYPERC
- #define log(x) ln(x) /* wrong name. Others built-in */
- #else
- #include <math.h>
- #endif
-
-
- main()
- { int i;
- EXTENDED a;
-
- #include "startup.c"
-
- a = 1.0;
- for (i = 1; i <= (ILOOP - 1); i++)
- a = tan(atan(exp(log(sqrt(a*a))))) + 1.0;
-
- printf("a = %20.14e\n", a);
-
- #include "done.c"
-
-
-
-
-
-
-
- }
-
- ====================
-
- SIEVE.C
-
- ====================
-
-
- /* Listing 1: Sieve benchmark */
-
- /* sieve.c */
-
- #define LSC
-
- /* Eratosthenes Sieve Prime Number Program from BYTE January 1983
-
- Modified by Joel West, April 13, 1987, for 16-bit short
- */
-
- #define REGISTER
- #include <stdio.h>
-
- #ifdef HYPERC
- #include <TBXTypes.h>
- #include <events.h>
- #endif
-
- #define TRUE 1
- #define FALSE 0
- #define size 8190
-
- char flags [size + 1];
-
- main()
- { REGISTER short i, prime, k, count, iter;
-
- #include "startup.c"
-
- for (iter = 1; iter <= 10; iter++) /* do program
- 10 times */
- { count = 0; /*
- prime counter */
- for (i = 0; i <= size; i++) /* set all
- flags true */
- flags [i] = TRUE;
-
- for (i = 0; i <= size; i++)
- { if (flags [i]) /*
- found a prime */
- { prime = i + i + 3; /*
- twice index + 3 */
- for (k = i + prime; k <= size; k+= prime)
- flags [k] = FALSE; /*
- kill all multiple */
- count++; /*
- primes found */
- }
- }
- }
-
- #include "done.c"
- }
-
-
-
- ====================
-
- SORT.C
-
- ====================
-
-
- /* Listing 4: Sort benchmark */
-
-
- /* sort.c */
-
-
- #define LSC
-
- /* sorting benchmark---calls randomly the number of times specified by
- MAXNUM to create an array of long integers, then does a quicksort
- on the array of longs. The program does this for the number of
- times specified by COUNT.
-
- Modified by Joel West, April 13, 1987, for 16-bit short
- */
-
- #include <stdio.h>
-
- #ifdef HYPERC
- #include <TBXTypes.h>
- #include <events.h>
- #endif
-
- #define REGISTER
-
- #define MAXNUM 1000
- #define COUNT 10
- #define MODULUS ((long) 0x20000)
-
- #define C 13849L
- #define A 25173L
-
- long seed = 7L;
- long random();
- long buffer [MAXNUM] = {0};
-
-
- main()
- { REGISTER short i, j;
- REGISTER long temp;
-
- #include "startup.c"
- printf ("Filling array and sorting %d times\n", COUNT);
- for (i = 0; i < COUNT; ++i)
- { for (j = 0; j < MAXNUM; ++j)
- { temp = random (MODULUS);
- if (temp < 0L)
- temp = (-temp);
- buffer[j] = temp;
- }
- printf ("Buffer full, iteration %d\n", i);
- quick (0, MAXNUM - 1, buffer);
- }
-
- #include "done.c"
- }
-
-
- quick (lo, hi, base)
- REGISTER short lo, hi;
-
-
-
-
-
-
- long base [];
- { REGISTER int i, j;
- REGISTER long pivot, temp;
-
- if (lo < hi)
- { for (i = lo, j = hi-1, pivot = base [hi]; i < j; )
- { while (i < hi && base [i] <= pivot)
- ++i;
- while (j > lo && base [j] >= pivot)
- --j;
- if (i < j)
- { temp = base [i];
- base [i] = base [j];
- base [j] = temp;
- }
- }
- temp = base [i];
- base [i] = base [hi];
- base [hi] = temp;
- quick (lo, i - 1, base);
- quick (i + 1, hi, base);
- }
- }
-
- long random (size)
- REGISTER long size;
- {
- seed = seed * A + C;
- return (seed % size);
- }
-
-
- ====================
-
- STARTUP.C
-
- ====================
-
-
- /* Listing 9: Standard startup source */
-
- /* startup.c */
-
- #ifdef HYPERC
- /* Won't create window for us */
- stdTerm(PStr("Hyper-C window"));
- EXTERN CHAR getKey();
- #define getchar() getKey(TRUE)
- #endif
-
- #ifdef MPU68000
- /* Aztec needs this */
- pascal long TickCount() = 0xa975;
- #endif
-
-
- /* Start timing */
- long time;
- puts("Press any key to begin timed test: ");
- getchar();
- puts("\nStarting\n");
- time = TickCount();